package com.dongrj.framework.core.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;

/**
 * @author dongrongjun
 * @date 2020/08/04
 */

@ToString
@Setter
@Getter
public abstract class AbstractReq implements Serializable {
    /**
     * 请求用户
     */
    private String loginUserId;
    /**
     * 每页大小
     */
    public Integer pageSize;
    /**
     * 当前页码
     */
    public Integer currentPage;
    /**
     * 计算出的起始位置
     */
    public Integer start;
    /**
     * 排序字段
     */
    private String orderBy;
    /**
     * 创建开始时间
     */
    private Date beginCreateTime;
    /**
     * 创建结束时间
     */
    private Date endCreateTime;
    /**
     * 修改开始时间
     */
    private Date beginUpdateTime;
    /**
     * 修改结束时间
     */
    private Date endUpdateTime;
    /**
     * 查询时设置可用参数
     */
    private boolean selectSetAvailable = false;
    /**
     * 查询时无值返回Null,默认报异常
     */
    private boolean selectReturnNull = false;
    /**
     * 查询时走数据库时更新或者添加缓存
     */
    private boolean selectSetCache = false;
    /**
     * 修改时删除缓存
     */
    private boolean updateDeleteCache = false;
    /**
     * 修改时更新修改时间
     */
    private boolean updateUpdateTime = false;

    public Integer getStart() {
        return getStart(currentPage, pageSize);
    }

    public void setStart(Integer start) {
        this.start = start;
    }

    public static int getStart(Integer currentPage, Integer pageSize) {
        if (currentPage == null || pageSize == null) {
            return -1;
        }
        if (currentPage == 0 || pageSize == 0) {
            return -1;
        }
        int result = Math.max(currentPage - 1, 0);
        return result * pageSize;
    }
}

